"""
系统配置初始化脚本
用于在系统启动时创建默认的系统配置
"""
from app.modules.system.services import SystemConfigService


async def init_system_configs():
    """初始化系统配置"""
    default_configs = [
        # 系统基本信息
        {
            "key": "site_name",
            "value": "X-Admin后台管理系统",
            "description": "网站名称",
            "type": "string",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "site_description",
            "value": "基于FastAPI的现代化后台管理系统",
            "description": "网站描述",
            "type": "string",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "site_keywords",
            "value": "FastAPI,后台管理,管理系统",
            "description": "网站关键词",
            "type": "string",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "site_logo",
            "value": "/static/logo.png",
            "description": "网站Logo路径",
            "type": "string",
            "is_system": True,
            "is_public": True
        },
        
        # 系统功能配置
        {
            "key": "enable_registration",
            "value": "true",
            "description": "是否启用用户注册",
            "type": "bool",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "enable_captcha",
            "value": "false",
            "description": "是否启用验证码",
            "type": "bool",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "session_timeout",
            "value": "7200",
            "description": "会话超时时间（秒）",
            "type": "int",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "max_login_attempts",
            "value": "5",
            "description": "最大登录尝试次数",
            "type": "int",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "login_lockout_duration",
            "value": "1800",
            "description": "登录锁定时间（秒）",
            "type": "int",
            "is_system": True,
            "is_public": False
        },
        
        # 文件上传配置
        {
            "key": "upload_max_size",
            "value": "10485760",
            "description": "最大上传文件大小（字节）",
            "type": "int",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "upload_allowed_extensions",
            "value": "['jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx', 'xls', 'xlsx']",
            "description": "允许上传的文件扩展名",
            "type": "json",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "upload_path",
            "value": "/uploads",
            "description": "文件上传路径",
            "type": "string",
            "is_system": True,
            "is_public": False
        },
        
        # 邮件配置
        {
            "key": "email_smtp_host",
            "value": "smtp.qq.com",
            "description": "SMTP服务器地址",
            "type": "string",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "email_smtp_port",
            "value": "587",
            "description": "SMTP服务器端口",
            "type": "int",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "email_username",
            "value": "",
            "description": "邮箱用户名",
            "type": "string",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "email_password",
            "value": "",
            "description": "邮箱密码",
            "type": "string",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "email_use_tls",
            "value": "true",
            "description": "是否使用TLS加密",
            "type": "bool",
            "is_system": True,
            "is_public": False
        },
        
        # 系统维护配置
        {
            "key": "maintenance_mode",
            "value": "false",
            "description": "是否开启维护模式",
            "type": "bool",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "maintenance_message",
            "value": "系统维护中，请稍后再试",
            "description": "维护模式提示信息",
            "type": "string",
            "is_system": True,
            "is_public": True
        },
        
        # 日志配置
        {
            "key": "log_level",
            "value": "INFO",
            "description": "日志级别",
            "type": "string",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "log_retention_days",
            "value": "30",
            "description": "日志保留天数",
            "type": "int",
            "is_system": True,
            "is_public": False
        },
        
        # 缓存配置
        {
            "key": "cache_enabled",
            "value": "true",
            "description": "是否启用缓存",
            "type": "bool",
            "is_system": True,
            "is_public": False
        },
        {
            "key": "cache_ttl",
            "value": "3600",
            "description": "缓存过期时间（秒）",
            "type": "int",
            "is_system": True,
            "is_public": False
        },
        
        # 分页配置
        {
            "key": "default_page_size",
            "value": "10",
            "description": "默认分页大小",
            "type": "int",
            "is_system": True,
            "is_public": True
        },
        {
            "key": "max_page_size",
            "value": "100",
            "description": "最大分页大小",
            "type": "int",
            "is_system": True,
            "is_public": True
        }
    ]
    
    print("开始初始化系统配置...")
    
    for config_data in default_configs:
        try:
            await SystemConfigService.set_config_value(
                key=config_data["key"],
                value=config_data["value"],
                description=config_data["description"],
                config_type=config_data["type"],
                is_system=config_data["is_system"],
                is_public=config_data["is_public"]
            )
            print(f"✓ 配置 {config_data['key']} 初始化成功")
        except Exception as e:
            print(f"✗ 配置 {config_data['key']} 初始化失败: {str(e)}")
    
    print("系统配置初始化完成！")


if __name__ == "__main__":
    import asyncio
    from app.db.config import register_mysql
    from app.main import app
    
    async def main():
        # 初始化数据库连接
        await register_mysql(app)
        # 初始化系统配置
        await init_system_configs()
    
    asyncio.run(main()) 